home *** CD-ROM | disk | FTP | other *** search
/ Fritz: All Fritz / All Fritz.zip / All Fritz / FILES / PROGMISC / PCSSP.LZH / PC-SSP.ZIP / STATCORR.ZIP / PROBT.FOR < prev    next >
Text File  |  1985-11-29  |  6KB  |  222 lines

  1. C
  2. C     ..................................................................
  3. C
  4. C        SUBROUTINE PROBT
  5. C
  6. C        PURPOSE
  7. C           TO OBTAIN MAXIMUM LIKELIHOOD ESTIMATES FOR THE PARAMETERS A
  8. C           AND B IN THE PROBIT EQUATION  Y = A + BX.  AN ITERATIVE
  9. C           SCHEME IS USED.  THE INPUT TO THE SUBROUTINE CONSISTS OF K
  10. C           DIFFERENT DOSAGE LEVELS APPLIED TO K GROUPS OF SUBJECTS, AND
  11. C           THE NUMBER OF SUBJECTS IN EACH GROUP RESPONDING TO THE
  12. C           RESPECTIVE DOSAGE OF THE DRUG.
  13. C
  14. C        USAGE
  15. C           CALL PROBT (K,X,S,R,LOG,ANS,W1,W2,IER)
  16. C
  17. C        DESCRIPTION OF PARAMETERS
  18. C           K   - NUMBER OF DIFFERENT DOSE LEVELS OF THE DRUG.  K SHOULD
  19. C                 BE GREATER THAN 2.
  20. C           X   - INPUT VECTOR OF LENGTH K CONTAINING THE DOSE LEVEL OF
  21. C                 THE DRUG TESTED.  X MUST BE NON-NEGATIVE.
  22. C           S   - INPUT VECTOR OF LENGTH K CONTAINING THE NUMBER OF
  23. C                 SUBJECTS TESTED AT EACH DOSE LEVEL
  24. C           R   - INPUT VECTOR OF LENGTH K CONTAINING THE NUMBER OF
  25. C                 SUBJECTS AT EACH LEVEL RESPONDING TO THE DRUG
  26. C           LOG - INPUT OPTION CODE
  27. C                 1- IF IT IS DESIRED TO CONVERT THE DOSE LEVELS TO
  28. C                    COMMON LOGARITHMS.  THE DOSAGE LEVELS SHOULD BE
  29. C                    NON-NULL IN THIS CASE.
  30. C                 0- IF NO CONVERSION IS DESIRED
  31. C           ANS - OUTPUT VECTOR OF LENGTH 4 CONTAINING THE FOLLOWING
  32. C                 RESULTS
  33. C                 ANS(1)- ESTIMATE OF THE INTERCEPT CONSTANT A
  34. C                 ANS(2)- ESTIMATE OF THE PROBIT REGRESSION COEFFICIENT
  35. C                         B
  36. C                 ANS(3)- CHI-SQUARED VALUE FOR A TEST OF SIGNIFICANCE
  37. C                         OF THE FINAL PROBIT EQUATION
  38. C                 ANS(4)- DEGREES OF FREEDOM FOR THE CHI-SQUARE
  39. C                         STATISTIC
  40. C           W1  - OUTPUT VECTOR OF LENGTH K CONTAINING THE PROPORTIONS
  41. C                 OF SUBJECTS RESPONDING TO THE VARIOUS DOSE LEVELS OF
  42. C                 THE DRUG
  43. C           W2  - OUTPUT VECTOR OF LENGTH K CONTAINING THE VALUES OF THE
  44. C                 EXPECTED PROBIT FOR THE VARIOUS LEVELS OF A DRUG
  45. C           IER - 1 IF K IS NOT GREATER THAN 2.
  46. C                 2 IF SOME DOSAGE LEVEL IS NEGATIVE, OR IF THE INPUT
  47. C                   OPTION CODE LOG IS 1 AND SOME DOSAGE LEVEL IS ZERO.
  48. C                 3 IF SOME ELEMENT OF S IS NOT POSITIVE.
  49. C                 4 IF NUMBER OF SUBJECTS RESPONDING IS GREATER THAN
  50. C                 NUMBER OF SUBJECTS TESTED.
  51. C                 ONLY IF IER IS ZERO IS A PROBIT ANALYSIS PERFORMED.
  52. C                 OTHERWISE, ANS, W1, AND W2 ARE SET TO ZERO.
  53. C
  54. C        REMARKS
  55. C           THE PROGRAM WILL ITERATE ON THE PROBIT EQUATION UNTIL TWO
  56. C           SUCCESSIVE SOLUTIONS PRODUCE CHANGES OF LESS THAN 10**(-7).
  57. C
  58. C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
  59. C           NDTR
  60. C           NDTRI
  61. C
  62. C        METHOD
  63. C           REFER TO D. J. FINNEY, PROBIT ANALYSIS. 2ND ED. (CAMBRIDGE,
  64. C           1952)
  65. C
  66. C     ..................................................................
  67. C
  68.       SUBROUTINE PROBT (K,X,S,R,LOG,ANS,W1,W2,IER)
  69. C
  70.       DIMENSION X(1),S(1),R(1),ANS(1),W1(1),W2(1)
  71. C
  72. C        TEST WHETHER LOG CONVERSION IS NEEDED
  73. C
  74.       IER=0
  75.       IF(K-2)5,5,7
  76.     5 IER = 1
  77.       GO TO 90
  78.     7 DO 8 I=1,K
  79.       IF(X(I))12,8,8
  80.     8 CONTINUE
  81.       IF(LOG-1) 16,10,16
  82.    10 DO 15 I=1,K
  83.       IF(X(I))12,12,14
  84.    12 IER=2
  85.       GO TO 90
  86.    14 X(I)= ALOG10(X(I))
  87.    15 CONTINUE
  88. C
  89. C        COMPUTE PROPORTIONS OF OBJECTS RESPONDING
  90. C
  91.    16 DO 18 I=1,K
  92.       IF(S(I)-R(I)) 17,18,18
  93.    17 IER=4
  94.       GO TO 90
  95.    18 CONTINUE
  96.    20 DO 23 I=1,K
  97.       IF(S(I))21,21,22
  98.    21 IER=3
  99.       GO TO 90
  100.    22 W1(I)=R(I)/S(I)
  101.    23 CONTINUE
  102. C
  103. C        COMPUTE INITIAL ESTIMATES OF INTERCEPT AND PROBIT REGRESSION
  104. C        COEFFICIENT
  105. C
  106.       WN=0.0
  107.       XBAR=0.0
  108.       SNWY=0.0
  109.       SXX=0.0
  110.       SXY=0.0
  111. C
  112.       DO 30 I=1,K
  113.       P=W1(I)
  114.       IF(P) 30, 30, 24
  115.    24 IF(P-1.0) 25, 30, 30
  116.    25 WN=WN+1.0
  117. C
  118.       CALL NDTRI (P,Z,D,IER)
  119. C
  120.       Z=Z+5.0
  121.       XBAR=XBAR+X(I)
  122.       SNWY=SNWY+Z
  123.       SXX=SXX+X(I)**2
  124.       SXY=SXY+X(I)*Z
  125.    30 CONTINUE
  126. C
  127.       B=(SXY-(XBAR*SNWY)/WN)/(SXX-(XBAR*XBAR)/WN)
  128.       XBAR=XBAR/WN
  129.       SNWY=SNWY/WN
  130.       A=SNWY-B*XBAR
  131.       DD=0.0
  132. C
  133. C        COMPUTE EXPECTED PROBIT
  134. C
  135.       DO 31 I=1,K
  136.    31 W2(I)=A+B*X(I)
  137. C
  138.    33 SNW=0.0
  139.       SNWX=0.0
  140.       SNWY=0.0
  141.       SNWXX=0.0
  142.       SNWXY=0.0
  143.       DO 50 I=1,K
  144.       Y=W2(I)
  145. C
  146. C        FIND A WEIGHTING COEFFICIENT FOR PROBIT ANALYSIS
  147. C
  148.       D=Y-5.0
  149. C
  150.       CALL NDTR (D,P,Z)
  151. C
  152.       Q=1.0-P
  153.       W=(Z*Z)/(P*Q)
  154. C
  155. C        COMPUTE WORKING PROBIT
  156. C
  157.       IF(Y-5.0) 35, 35, 40
  158.    35 WP=(Y-P/Z)+W1(I)/Z
  159.       GO TO 45
  160.    40 WP=(Y+Q/Z)-(1.0-W1(I))/Z
  161. C
  162. C        SUM INTERMEDIATE RESULTS
  163. C
  164.    45 WN=W*S(I)
  165.       SNW=SNW+WN
  166.       SNWX=SNWX+WN*X(I)
  167.       SNWY=SNWY+WN*WP
  168.       SNWXX=SNWXX+WN*X(I)**2
  169.    50 SNWXY=SNWXY+WN*X(I)*WP
  170. C
  171. C        COMPUTE NEW ESTIMATES OF INTERCEPT AND COEFFICIENT
  172. C
  173.       XBAR=SNWX/SNW
  174. C
  175.       SXX=SNWXX-(SNWX)*(SNWX)/SNW
  176.       SXY=SNWXY-(SNWX)*(SNWY)/SNW
  177.       B=SXY/SXX
  178. C
  179.       A=SNWY/SNW-B*XBAR
  180. C
  181. C        EXAMINE THE CHANGES IN Y
  182. C
  183.       SXX=0.0
  184.       DO 60 I=1,K
  185.       Y=A+B*X(I)
  186.       D=W2(I)-Y
  187.       SXX=SXX+D*D
  188.    60 W2(I)=Y
  189.       IF(( ABS(DD-SXX))-(1.0E-7)) 65, 65, 63
  190.    63 DD=SXX
  191.       GO TO 33
  192. C
  193. C        STORE INTERCEPT AND COEFFICIENT
  194. C
  195.    65 ANS(1)=A
  196.       ANS(2)=B
  197. C
  198. C        COMPUTE CHI-SQUARE
  199. C
  200.       ANS(3)=0.0
  201.       DO 70 I=1,K
  202.       Y=W2(I)-5.0
  203. C
  204.       CALL NDTR (Y,P,D)
  205. C
  206.       AA=R(I)-S(I)*P
  207.       DD=S(I)*P*(1.0-P)
  208.    70 ANS(3)=ANS(3)+AA*AA/DD
  209. C
  210. C        DEGREES OF FREEDOM FOR CHI-SQUARE
  211. C
  212.       ANS(4)=K-2
  213. C
  214.    80 RETURN
  215.    90 DO 100 I=1,K
  216.       W1(I)=0.0
  217.   100 W2(I)=0.0
  218.       DO 110 I=1,4
  219.   110 ANS(I)=0.0
  220.       GO TO 80
  221.       END
  222.